from abc import ABC, abstractmethod

class DatabaseManager(ABC):
    @abstractmethod
    def create(self, table: str, data: dict) -> bool:
        """
        插入一条数据
        :param table: 表名
        :param data: 数据字典，键为列名，值为数据
        :return: 是否成功
        """
        pass

    @abstractmethod
    def read(self, table: str, condition: str = None) -> list[dict]:
        """
        查询数据
        :param table: 表名
        :param condition: 查询条件（可选）
        :return: 查询结果列表，每行数据为一个字典
        """
        pass

    @abstractmethod
    def update(self, table: str, data: dict, condition: str) -> bool:
        """
        更新数据
        :param table: 表名
        :param data: 更新的数据字典，键为列名，值为新数据
        :param condition: 更新条件
        :return: 是否成功
        """
        pass

    @abstractmethod
    def delete(self, table: str, condition: str) -> bool:
        """
        删除数据
        :param table: 表名
        :param condition: 删除条件
        :return: 是否成功
        """
        pass